"use strict";

var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");

var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));

/**
 * 获取文件资源类型
 *
 * @since 1.1.0
 * @category 实用函数
 * @param {string} str 需要解析的URL(文件名/全路径/相对路径).
 * @param {string} type 文件类型(img-图片类，video-视频类，audio-音频类，pdf-文件，excel-文件，word-文档).
 *
 * @returns { boolean } 类型结果.
 *
 * @example
 *
 * z.sourcesType('http://fs.test.ztosys.com/cedf7.png','img')
 * // => true
 *
 * z.sourcesType('http://fs.test.ztosys.com/cedf7.mp4','video')
 * // => 'true'
 *
 * z.sourcesType('http://fs.test.ztosys.com/cedf7.mp3','audio')
 * // => 'true'
 *
 * z.sourcesType('http://fs.test.ztosys.com/cedf7.apk','pdf')
 * // => false
 */
function sourcesType(str, type) {
  var status = false; // 没有传入url

  if (!str) {
    throw new Error('没有需要解析的文件来源');
  } else if (typeof str !== 'string') {
    throw new Error('错误类型的文件来源');
  } else if (!(0, _includes.default)(str).call(str, '.')) {
    // 判断是否有.字符
    throw new Error('错误的文件来源');
  } else if (!type) {
    throw new Error('没有需要匹配的文件类型');
  } else if (typeof type !== 'string') {
    throw new Error('错误的文件类型');
  } else {
    var lowerStr = str.toLocaleLowerCase();
    var dispose = lowerStr.substring(lowerStr.lastIndexOf('.') + 1); // 市面主流图片文件类型

    var img = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'svg', 'pic']; // 市面主流视频文件类型

    var video = ['avi', 'flv', 'wmv', 'rmvb', 'mp4', 'mkv', 'mov', 'mpeg', 'm4v', 'asf', 'f4v', 'rm', '3gp', 'vob']; // 市面主流音频文件类型

    var audio = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'au', 'aiff', 'ape']; // 市面主流pdf类型

    var pdf = ['pdf']; // 市面主流excel文件类型

    var excel = ['xls', 'xlsx', 'xlsm']; // 市面主流word文件类型

    var word = ['doc', 'docx'];

    if (type === 'img' && (0, _includes.default)(img).call(img, dispose)) {
      status = true;
    } else if (type === 'video' && (0, _includes.default)(video).call(video, dispose)) {
      status = true;
    } else if (type === 'audio' && (0, _includes.default)(audio).call(audio, dispose)) {
      status = true;
    } else if (type === 'pdf' && (0, _includes.default)(pdf).call(pdf, dispose)) {
      status = true;
    } else if (type === 'excel' && (0, _includes.default)(excel).call(excel, dispose)) {
      status = true;
    } else if (type === 'word' && (0, _includes.default)(word).call(word, dispose)) {
      status = true;
    }
  }

  return status;
}

module.exports = sourcesType;